# -*- coding:utf-8 -*-
__author__ = 'wangjvv'

'''
date: 2020/9/23
description: 封装http请求方法
'''

import requests,json
from config.setting import project_url,username,password
from util.handleLog import do_logger

class HandleRequest():
    def __init__(self):

        self.session = requests.session() #创建新的请求会话
        self.base_url = project_url
        token = self.token(username,password)  #获取登录接口返回的token
        self.session.headers.update({'Authorization':'Bearer '+token})  #将token更新到本次会话的请求头中

    def token(self,username,password):
        '''
        封装登录请求，获取token
        username: 用户名
        password: 密码
        '''
        params = {'username':username,
                  'password':password,
                  'grant_type':'password'}
        response = self.post('/oauthep/uaa/oauth/token',data=params)
        return response['access_token']

    def get(self,url,params,headers=None):
        '''
        封装get请求
        url:请求路径,不包含ip+端口号
        params:请求传入参数，默认字典格式
        header:请求头信息，默认none
        '''
        response = self.session.get(url=self.base_url+url,params=params,headers=headers,verify=False) #发送get请求
        do_logger.info('发送请求：%s -> 请求方法：GET -> 请求地址：%s -> 请求参数：%s'%(url,response.url,params))
        res_text = json.loads(response.text)  #将返回数据转换为字典格式
        do_logger.info('请求状态码：%s -> 返回数据：%s'%(response.status_code,res_text))
        return res_text  #返回字典格式数据

    def post(self,url,data,headers=None):
        '''
        封装post请求
        url:请求路径,不包含ip+端口号
        params:请求传入参数，默认字典格式
        header:请求头信息，默认none
        '''
        response = self.session.post(url=self.base_url+url,data=data,headers=headers,verify=False) #发送get请求
        do_logger.info('发送请求：%s -> 请求方法：GET -> 请求地址：%s -> 请求参数：%s' % (url, response.url, data))
        res_text = json.loads(response.text)  # 将返回数据转换为字典格式
        do_logger.info('请求状态码：%s -> 返回数据：%s' % (response.status_code, res_text))
        return res_text  #返回字典格式数据

    def mock_get(self,url,params,headers=None):
        """mock接口专用访问方法 - get"""
        response = requests.get(url=url, params=params, headers=headers)  # 发送get请求
        do_logger.info('发送请求：%s -> 请求方法：GET -> 请求地址：%s -> 请求参数：%s' % (url, response.url, params))
        res_text = json.loads(response.text)  # 将返回数据转换为字典格式
        do_logger.info('请求状态码：%s -> 返回数据：%s' % (response.status_code, res_text))
        return res_text  # 返回字典格式数据


    def mock_post(self, url, data, headers=None):
        """mock接口专用访问方法 - post"""
        response = requests.post(url=url,data=data, headers=headers)  # 发送get请求
        do_logger.info('发送请求：%s -> 请求方法：POST -> 请求地址：%s -> 请求参数：%s' % (url, response.url, data))
        res_text = json.loads(response.text)  # 将返回数据转换为字典格式
        do_logger.info('请求状态码：%s -> 返回数据：%s' % (response.status_code, res_text))
        return response.text  # 返回字典格式数据

request = HandleRequest()
if __name__ == '__main__':
    hq = HandleRequest()
    # print(hq.token('test',123456))
    # param = {'projectId':130}
    # print(hq.get(url='/system/system/SysGeneralConfig/list/',params=param))
    r = request.mock_get(url='http://127.0.0.1:5001/resource/getSubProjectId',params={'stageName':'测试分期'})
    print(type(r))